package com.sh.data.engine.repository.dao.normalization.standard.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.sh.data.engine.repository.dao.base.EngineBaseModel;
import lombok.*;

import java.util.Date;

/**
 * @author binghe
 * @email binghe.yxh@xuelangyun.com
 */
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Data
@TableName("tb_dictionary")
public class DictionaryEntity  extends EngineBaseModel<DictionaryEntity>{

    /**
     * 项目id
     */
    private Long projectId;


    /**
     * 字典名称（英文）
     */
    private String dictNameEn;

    /**
     * 字典名称（中文）
     */
    private String dictNameCn;

    /**
     * 字典分组id
     */
    private Long dictDirId;

    /**
     * 发布状态 1已发布 0未发布
     */
    private Integer releaseStatus;

    /**
     * 发布时间
     */
    private Date releaseTime;

    /**
     * 字典类型 0自建 1引用
     */
    private Integer dictType;

    /**
     * 业务定义（备注）
     */
    private String remark;

    /**
     * 引用字典id
     */
    private Long pid;

    /**
     * 归属部门id
     */
    private Long departmentId;

    /**
     * 数据类型
     */
    private String dictDataType;

    /**
     * 数据长度
     */
    private Integer dictDataLength;

    /**
     * 数据精度
     */
    private Integer dictDataPrecision;

    /**
     * 度量单位
     */
    private String dictDataUnit;

    /**
     * 允许为空 0-否 1-是
     */
    private Integer allowNull;

    /**
     * 允许重复 0-否 1-是
     */
    private Integer allowDuplicate;

    /**
     * 取值范围json
     */
    private String dictDataRangeJson;

    /**
     * 正则表达式
     */
    private String dictDataPattern;

    /**
     * 枚举值json
     */
    private String dictDataEnumValueJson;

    /**
     * 业务属性json
     */
    private String bizPropertiesJson;

    /**
     * 删除状态 0是删除 1是未删除
     */
    @TableLogic(value = "1", delval = "0")
    private Integer rowState;

    //  @Tolerate
    //  public DictionaryEntity() {}

    public Boolean isRelased() {
        return releaseStatus != null && 1 == releaseStatus;
    }

    public Boolean disRelased() {
        return releaseStatus != null && 0 == releaseStatus;
    }
}
